#ifndef STATE_H
#define STATE_H

#include "Message/Message.h"

template <class entity_type>
class State
{
public:
	virtual ~State(){};

	virtual void Enter(entity_type*) = 0;
	virtual void Execute(entity_type*) = 0;
	virtual void Exit(entity_type*) = 0;

	virtual bool OnMessage(entity_type*, const Message&) = 0;
};

#endif